Switches need to forward packets for flows with varying requirements. While the majority of flows have modest throughput demands, a small subset usually takes up a significant part of the available capacity. These flows are called heavy hitters. When left unrestricted, heavy hitters lead to drops and build-up of queues for all flows. Thus, it is desirable to identify heavy hitters and mitigate their adverse effects to other flows' completion time by using techniques such as fair packet drop, priority queuing etc.